package com.example.innelop

import org.junit.Test


/**
 * With内置函数
 * 功能和run一模一样，只是使用方法
 * with(对象)
 *
 * @author zhouronghua
 * @time 2022/3/24 9:54 下午
 */
class WithTest {

    @Test
    fun testWith() {
        val str = "我是小猪猪"
        // 匿名函数使用
        val result = with(str) {
            println("这是方法体内")
            "$str 进入了with函数"
        }
        println(result)
        // 具名函数使用
        println("===具名函数使用===")
        val result2 = with(str, ::getStringLength)
        println("具名函数结果$str 的长度： ${result2}")
        // 结果getLenInfo，将结果转换为String
        val result3 = with(result2, ::getLenInfo)
        val result4 = with(result3, ::getInfoMap)
        println(result4)
    }

    fun getStringLength(str: String) = str.length

    fun getLenInfo(len: Int) = "你的长度是$len"

    fun getInfoMap(info: String) = " 【$info】 "
}